package model

import (
	"smart-health-platforms/config"
	"time"
)

// CaptureImage 抓拍图片模型
type CaptureImage struct {
	ID          int32     `gorm:"primaryKey;autoIncrement" json:"id"`
	UserID      int32     `gorm:"index;not null" json:"user_id"`            // 关联用户ID
	VideoPath   string    `gorm:"size:500;not null" json:"video_path"`      // 视频文件路径
	ImageData   []byte    `gorm:"type:longblob;not null" json:"image_data"` // 图片二进制数据
	ImageFormat string    `gorm:"size:10;not null" json:"image_format"`     // 图片格式：jpg, png等
	FrameTime   time.Time `gorm:"not null" json:"frame_time"`               // 抓拍时间点
	FaceCount   int       `gorm:"default:0" json:"face_count"`              // 检测到的人脸数量
	Confidence  float64   `gorm:"default:0" json:"confidence"`              // 置信度
	CreatedAt   time.Time `gorm:"autoCreateTime" json:"created_at"`
	UpdatedAt   time.Time `gorm:"autoUpdateTime" json:"updated_at"`
}

// TableName 指定表名
func (CaptureImage) TableName() string {
	return "capture_images"
}

// AddCaptureImage 新增抓拍图片记录
func (c *CaptureImage) AddCaptureImage() error {
	return config.DB.Create(c).Error
}

// GetCaptureImagesByUserID 根据用户ID获取抓拍图片
func (c *CaptureImage) GetCaptureImagesByUserID(userID int32) ([]CaptureImage, error) {
	var images []CaptureImage
	err := config.DB.Where("user_id = ?", userID).Order("created_at desc").Find(&images).Error
	return images, err
}

// GetCaptureImageByID 根据ID获取抓拍图片
func (c *CaptureImage) GetCaptureImageByID(id int32) error {
	return config.DB.First(c, id).Error
}

// CaptureDetail 抓拍详情模型
type CaptureDetail struct {
	ID        int32     `gorm:"primaryKey;autoIncrement" json:"id"`
	RecordID  int32     `gorm:"index;not null" json:"record_id"` // 关联记录ID
	FramePath string    `gorm:"size:500" json:"frame_path"`      // 帧图片路径
	FaceCount int       `gorm:"default:0" json:"face_count"`     // 人脸数量
	Timestamp time.Time `gorm:"not null" json:"timestamp"`       // 时间戳
	CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
}

// TableName 指定表名
func (CaptureDetail) TableName() string {
	return "capture_details"
}
